/**
 * Created by gbolin on 2017/10/19.
 * 应用程序的启动（入口）文件
 */
/*加载express模块*/
var express=require("express");
/*加载模板处理模块*/
var swig=require("swig");
/*加载数据库模块*/
var mongoose=require("mongoose");
/*加载 body-parser 用来处理用户post 提交过来的数据*/
var bodyParser=require("body-parser");
/*加载 cookies模块用于存储登录状态*/
 var Cookies=require("cookies");

/*创建app应用 相当于 http.createServer()*/
var app=express();

var User=require("./models/User");

/*
设置静态文件托管
当用户访问的url以/public开始，那么直接返回对应__dirname+"/public"下的文件。
* */
app.use("/public",express.static(__dirname+"/public"));

/*配置 body-parser*/
app.use(bodyParser.urlencoded({ extended: true }));
/*配置cookies*/
app.use(function (req,res,next) {
    req.cookie=new Cookies(req,res);
    req.userInfo={};
    if(req.cookie.get("userInfo")){
        try {
            req.userInfo=JSON.parse(req.cookie.get("userInfo"));

            /*获取当前用户的类型：是否是管理员*/

            User.findById(req.userInfo._id).then(function (userInfo) {
                req.userInfo.isAdmain=userInfo.isAdmain;
                next();
            })

        }catch (e){
            next();
        }
    }else{
        next();
    }


});

/*配置应用模板*/
//定义当前应用所使用的模板引擎
 /*
 第一个参数：模板引擎的名称，同时也是模板文件的后缀（可自定义）
 第二个参数：用于解析处理模板内容的方法
 * */
app.engine("html",swig.renderFile);
/*
 设置模板文的存放目录
 第一个参数必须是 views,第二个参数是目录
* */
app.set("views","./views");

/*
注册所使用的模板引擎
第一个参数 必须是view engine;
第二个参数和app.engine这个方法中定义的模板引擎的名称（第一个参数）是一致的。
* */
app.set("view engine","html");
/*配置应用模板*/


var multipart=require("connect-multiparty");
app.use(bodyParser.urlencoded());
app.use(multipart());

/*在开发过程中由于经常调试 应该取消 缓存*/
swig.setDefaults({cache:false});

/*相当于路由绑定*/
/*app.get("/",function (req,res,next) {
    /!* res.send("<h1>hello world</h1>")*!/
    /!*
    res.render()方法 读取views目录下的指定文件，解析并返回给客户端。
    第一个参数：表示模板的文件，相对于views目录
    第二个参数 传递给模板所使用的数据。
    * *!/
    res.render("index");

});*/
/*app.get("/index.css",function (req,res,next) {
     res.setHeader("content-type","text/css");
     res.send("body{background:red}");
});*/
/*根据不同的功能划分模块*/

app.use("/admin",require("./routers/admin"));
app.use("/api",require("./routers/api"));
app.use("/",require("./routers/main"));
/*监听http请求*/

/*var DB_URL = 'mongodb://localhost:27017/blog';

/!**
 * 连接
 *!/
mongoose.connect(DB_URL);

/!**
 * 连接成功
 *!/
mongoose.connection.on('connected', function () {
    console.log('Mongoose connection open to ' + DB_URL);
});

/!**
 * 连接异常
 *!/
mongoose.connection.on('error',function (err) {
    console.log('Mongoose connection error: ' + err);
});

/!**
 * 连接断开
 *!/
mongoose.connection.on('disconnected', function () {
    console.log('Mongoose connection disconnected');
});*/

/*
* 链接数据库*/
mongoose.connect("mongodb://localhost:27017/blog",function (err) {
   if(err){
       console.log("数据库链接失败！"+err);
   } else{
       console.log("数据库链接成功！");

       //数据库链接成功 启动服务。
       app.listen(3000);
   }
});




/*/!*加载 express 模块*!/
var express=require("express");
/!*加载模板处理模块*!/
var swig=require("swig");

var app=express();

swig.setDefaults({cache:false});

/!*配置应用*!/
app.engine("html",swig.renderFile);

app.set("views","./views");

app.set("view engine","html");

app.use("/public",express.static(__dirname+"/public"));
/!*配置应用*!/


app.get("/",function (req,res,next) {
     res.render("index")
});

app.listen(3000);*/

